Scroll to navigation

LSEEK(2) 시스템 콜들 LSEEK(2)

이름

lseek - 읽기/쓰기 파일 변위(offset)을 재배치한다.

사용법

#include <sys/types.h>
#include <unistd.h>

off_t lseek(int fildes, off_t offset, int whence);

설명

lseek 함수는 파일 기술자 fildes 의 변위를 다음과 같이 지시어 whence 에 따라 인자 offset 으로 재배치한다:

변위은 offset 바이트로 설정한다.
변위는 현재 위치 더하기 offset 바이트로 설정한다.
변위는 파일 크기 더하기 offset 바이트로 설정한다.

lseek 함수는 파일의 변위를 파일의 끝에 존재하는 끝 넘어로 설정할수 있다. 만일 데이터가 이 시점에서 나중에 쓰여진다면, 그 사이에 연속적으로 읽은 데이터는 0 바이트들을 반환한다.(데이터가 실제로 그 사이에 쓰여질때까지. )

반환값

성공시, lseek 는 파일 시작에서 바이트로 측정된 것처럼 결과 변위 위치를 반환한다. 그렇지 않으면, (off_t)-1 의 값이 반환되며 errno 는 에러를 가리키도록 설정된다.

에러

Fildes 가 열려진 파일 기술자가 아니다.
Fildes 가 pipe, socket 또는 FIFO와 관련되어 있다.
Whence 가 적당한 값이 아니다.

호환

SVr4, POSIX, BSD 4.3

RESTRICTIONS

몇몇 장치들은 이동이 불가능하며 POSIX는 지원되어야 하는 장치들을 지정하지 않았다.

리눅스 특정 제한들: tty 장치에서 lseek의 사용은 ESPIPE 를 반환한다. 다른 시스템들은 쓰여진 문자수를 반환하며 SEEK_SET을 카운터로 설정하여 사용한다. 몇몇 장치들, 즉 /dev/nullESPIPE 에러를 야기하지 않지만 값이 정의되지 않은 포인터를 반환한다.

주의

whence 의 문서 사용은 잘못된 영어이지만, 역사적 이유때문에 유지된다. 예전 코드로 바꿀때, whence 값들을 다음 매크로로 대신해라:

old new
0 SEEK_SET
1 SEEK_CUR
2 SEEK_END
L_SET SEEK_SET
L_INCR SEEK_CUR
L_XTND SEEK_END

SVR1-3 는 off_t 대신에 long 를 반환하며, BSD 는 int 를 반환한다.

관련 항목

dup(2), open(2), fseek(3)

역자

정강훈 <skyeyes@soback.kornet.net>, 2000년 9월 16일

1998년 1월 17 Linux